package com.huanglaoshi.java.io.fileoutputstream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.junit.Test;

public class 字节流_文件输出流_测试 {
	
	
	@Test
	public void copyFileTest() throws Exception {
		String src = "io/img/meimei.jpg";
		String destination ="io/img/meimei456.jpg";
		
		long start = System.currentTimeMillis();
		copyFile(src, destination);
		long end = System.currentTimeMillis();
		System.out.println("花费的时间为"+(end-start)+"毫秒 1秒=1000毫秒");
	}
	
	
	/**
	 * 文件复制功能...
	 * @param src            原来的文件在哪
	 * @param destination    复制文件到哪里去
	 */
	public static void copyFile(String src,String destination){
		//要读取的文件
		//File in  = new File("io/hello.txt");
		File in  = new File(src);
		//要写入的文件
		//File out = new File("io/hello10086.txt");
		File out = new File(destination);
		
		//提供对应的流 只有流才能对文件的内部进行操作
		FileInputStream  fis = null;
		FileOutputStream fos = null;
		
		try {
			fis=new FileInputStream(in);
			fos=new FileOutputStream(out);
			
			//读 用字节数组读
			byte[] b = new byte[20]; //大小根据读的数据的有个最佳值
			int len;//真实读了几个
			while((len=fis.read(b)) != -1){
				//fos.write(b);
				//fos.write(b,0,b.length);
				fos.write(b, 0, len);
			}
			System.out.println("文件复制完毕...");
		}catch (IOException e) {
			e.printStackTrace();
		}finally{
			//关闭输出流
			if(null != fos){
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			//关闭输入流
			if(null != fis){
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}

}
